Skip to content

fix(planning): name the convention-home resolver command in the interview's EARS spoke - #11675

Merged
kyle-sexton merged 4 commits into
mainfrom
fix/11597-ears-resolver-command
Nov 1, 2026
Merged

kyle-sexton merged 4 commits into
mainfrom
fix/11597-ears-resolver-command

Conversation

@kyle-sexton

Copy link
Copy Markdown
Member

Refs: #11597

Summary

Carries the change from #11632 (work-resolve-issue lane) on an owner-login branch, with the interview-defenses digest re-pinned, which the pr-unblock fix lane cannot do. The interview's EARS spoke (ears.md) now names the convention-home resolver command beside its pointer to the shared resolution ladder, and has it run before any AGENTS.md, CLAUDE.md or authoring-formats/README.md read for acceptance_criteria_format.

Fix

  • plugins/planning/skills/interview/context/ears.md: "Resolving acceptance_criteria_format" names bash "<plugin-root>/lib/resolve-convention-home.sh" --root "<project-root>" (with --root dropped when the project root is unset), says to read the README only under the printed home, and treats a non-zero exit as the ladder's step-6 degrade to free-text.
  • .changes/planning/work-resolve-issue-issue-11597-7c3f1a58.md: patch changelog fragment.
  • plugins/planning/tests/interview-defenses.test.sh: re-pinned with plugins/planning/tests/repin.sh. Pin context/ears.md is unchanged (the EARS tags and the format resolution ladder): 903332451df15c686d46259080f54f82824287b1efe4199a42716e5e95609c6f -> 9b0ef001c95777aaec490eb8b4b5d5a28b7662ae0da00107db7c01f4b5ce481d.

Verification

  • Defense check: git diff origin/main -- plugins/planning/skills/interview/context/ears.md shows 11 added lines and no changed or removed line. Every existing defense line in ears.md is unchanged. The added text adds a step (run the resolver first), and its non-zero-exit path is the step-6 degrade that plugins/planning/context/authoring-formats.md "Resolution ladder" already defines, so the change opens no new path around the ladder.
  • bash plugins/planning/tests/repin.sh '<label>' '<reason>': printed the old -> new line above and PASS (exit 0), which runs interview-defenses.test.sh in full.
  • Not run: the paid claude plugin eval host run of interview-ears-convention-tags that the issue's done-when names (resolver-ran in 3 of 3 with-arm runs).

Related

🤖 Generated with Claude Code

melodic-automation-lanes Bot and others added 3 commits October 31, 2026 16:34
Lane-Activity: work-resolve-issue/resolve-issue
context/ears.md is unchanged (the EARS tags and the format resolution ladder):
903332451df15c686d46259080f54f82824287b1efe4199a42716e5e95609c6f -> 9b0ef001c95777aaec490eb8b4b5d5a28b7662ae0da00107db7c01f4b5ce481d

Why the defense holds: the change only appends to "Resolving
acceptance_criteria_format". It names the ladder step-2 resolver command
with --root and has it run before any AGENTS.md, CLAUDE.md or README read;
a non-zero exit stays the ladder's step-6 free-text degrade
(context/authoring-formats.md). Every existing ears.md line, the EARS tags
and bullet shapes included, is byte-identical.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 31, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-31T19:09:35.896389Z ce774bc PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ce774bc0d0

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@github-actions

github-actions Bot commented Oct 31, 2026 •

Copy link
Copy Markdown
Contributor

claude-security-review reviewed 2aea1ae6d2419e66cb4b61ee008798fefbea8e3b: read 3 of 3 changed file(s); 0 finding(s), 0 as inline comments.

Security review: PR #11675

I found no security issues in this change.

I read every hunk of all 3 changed files. None of them matches a trusted path.

  • plugins/planning/skills/interview/context/ears.md: adds an instruction to run the existing resolve-convention-home.sh resolver before reading AGENTS.md, CLAUDE.md or authoring-formats/README.md for acceptance_criteria_format. It deletes or softens no instruction: the hunk only adds lines. A non-zero exit from the resolver degrades to free-text, so a failure lands on the most restrictive outcome and adds no path around the resolution ladder. The command's arguments are <plugin-root>, the plugin's install path, and <project-root>, the operator's own checkout root. Neither is set by an untrusted pull request, issue or comment author, so this adds no injection surface.
  • plugins/planning/tests/interview-defenses.test.sh: re-pins the digest of ears.md and adds a comment. The pin still fails if anyone later edits ears.md without re-pinning, so the defense check keeps working.
  • .changes/planning/...md: a changelog fragment with no security surface.

The diff touches no trust control, plugin manifest, workflow, token or credential path.

The PR context contains no embedded instructions aimed at the review lane.

critical-findings: 0

@github-actions

github-actions Bot commented Oct 31, 2026 •

Copy link
Copy Markdown
Contributor

claude-review reviewed 2aea1ae6d2419e66cb4b61ee008798fefbea8e3b: read 3 of 3 changed file(s); 0 finding(s), 0 as inline comments.

Code review: PR #11675

I found no blocking or advisory issues. I read all 3 changed files in full: .changes/planning/work-resolve-issue-issue-11597-7c3f1a58.md, plugins/planning/skills/interview/context/ears.md and plugins/planning/tests/interview-defenses.test.sh.

What I checked

  • The new resolver step matches the shared ladder. The new paragraph in ears.md agrees with plugins/planning/context/authoring-formats.md "Resolution ladder" on three points:
    • It runs the step-2 resolver before reading the root file or the README.
    • It reads the README only under the home the resolver prints.
    • It treats a non-zero exit as a step-6 degrade to free-text, matching "The resolver's exits".
  • The command's arguments are valid. resolve-convention-home.sh accepts --root <repo>. Without --root it uses the git toplevel of CLAUDE_PROJECT_DIR, so dropping --root when the project root is unset is the right fallback.
  • No existing line in ears.md changed. The diff only adds lines, so the EARS tag vocabulary, bullet shapes and degrade text are untouched.
  • The test pin. The new digest in interview-defenses.test.sh comes with a matching explanatory comment. I could not recompute the SHA-256 because this lane has no shell. The author says repin.sh passed; that is unverified here.
  • Changelog fragment. bump: patch fits a doc-only fix to a skill spoke. No plugin manifest changed, so the manifest checks don't apply.

Closing issue: The PR context lists no closing issue, only "Refs: #11597", so I checked no acceptance criteria. The PR body says the paid claude plugin eval run of interview-ears-convention-tags, which #11597's done-when names, was not run. A maintainer can decide whether that run is needed before closing #11597.

Embedded text: None. The PR context contains no instruction aimed at this lane.

Trusted paths: None of the changed files match a trusted-path glob.

@melodic-automation-lanes

Copy link
Copy Markdown
Contributor

pr-unblock / address-feedback finished round 1 of max 4 on ce774bc.

@melodic-automation-lanes

Copy link
Copy Markdown
Contributor

The pr-unblock lane stopped address-feedback on this pull request: the lane left a review finding open and no adjudicator verdict settled it: none was recorded, it found the finding does not hold where the lane had not disputed it (an UNCERTAIN or VALID-defer reply), which only an INCORRECT reply lets a verdict resolve, it found the finding asks only for tests whose covering check runs had not all passed when the round began, or it raised a security question on a finding the security-review lane rated below CRITICAL. The lane sets no label: the run ends in a failing pr-unblock/address-feedback status on the head the lane gated.

When a retry on this head can change the outcome, the lane runs one on its own, up to its per-head cap, and edits this comment if it stops again; a run that does not stop clears the status. When no retry can (a review thread the lane does not take or settle, or a failing check after the retries are spent), a person resolves the threads or gets the checks green, then dispatches the workflow below: that run finds the cause gone and clears the status. On a pull request the lanes App opened, the dispatchers start that run once per stop; on any other, a person does. A new commit to the branch starts clean.

To run it again on this head now, dispatch the pr-unblock workflow:

gh workflow run pr-unblock.yml -R melodic-software/claude-code-plugins -f pr-number=11675 -f activity=address-feedback

@kyle-sexton
kyle-sexton added this pull request to the merge queue Nov 1, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Nov 1, 2026
@kyle-sexton
kyle-sexton added this pull request to the merge queue Nov 1, 2026
Merged via the queue into main with commit 879fd93 Nov 1, 2026
52 of 53 checks passed
@kyle-sexton
kyle-sexton deleted the fix/11597-ears-resolver-command branch November 1, 2026 01:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant